package atech.ace.mapping;

import java.io.IOException;
import java.util.List;

import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;

import atech.ace.mapping.persistence.entities.Project;

/**
 * Servlet implementation class Home
 */
@WebServlet("/Home")
public class Home extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	@PersistenceContext(name="jdbc/ACE_ProjectMapping")
	EntityManager em;
	
	@Resource
	UserTransaction utx;
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			utx.begin();
			List projects = em.createQuery("select p from Project p").getResultList();
			for (Object project : projects) {
				((Project)project).getHumanResources();
			}
			request.setAttribute("projects", projects);
			utx.commit();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			try {
				utx.rollback();
			} catch (IllegalStateException e1) {
				e1.printStackTrace();
			} catch (SecurityException e1) {
				e1.printStackTrace();
			} catch (SystemException e1) {
				e1.printStackTrace();
			}
		} 
		
		request.getRequestDispatcher("WEB-INF/map.jsp").forward(request, response);
	}

}
